テーブルの作成

前回の復習

前回は、コマンドを使用してモデルの作成まで行いました。

 

f:id:whale_86:20201103215151j:plain

テーブル

▶︎テーブルとは、データベース内に作成される、データを表形式で格納する場所。データベースには目的に沿ったテーブルが用意される。

 

追加でレコードとカラムも説明します

▶︎表形式で行をレコード。列をカラムと呼びます。

 

めっちゃ分かりやすくまとめられていました。⬇️

 

26gram.com

 

マイグレーションを元にテーブルを作成

▶︎マイグレーションとは、テーブルの仕様書・設計図のこと。

▶︎テーブルはマイグレーションファイルを元に作られています。目的に沿ったテーブルを作るため、仕様を書いていきます。

 

前回のrails g modelコマンドで一緒にマイグレーションファイルも作られています。

以下のように編集します。

db/migrate/20XXXXXXXXXX_create_tweets.rb

class CreateTweets < ActiveRecord::Migration[6.0]
  def change
    create_table :tweets do |t|
      t.string :name
      t.string :text
      t.text :image
      t.timestamps
    end
  end
end

 t.に続くのが「型」で、に続くのが「カラム名」になります。

カラム名の型

 

カラムの型 説明 用途
integer 数値 金額、回数など
string 文字(短文) ユーザー名、メールアドレスなど
text 文字(長文) 投稿文、説明文など
boolean 真か偽か はい・いいえの選択、合格・不合格のフラグなど
datetime 日付と時刻 作成日時、更新日時など

 マイグレーションファイルにデフォルトでt.timestampsとありますが、こちらはcreated_atとupdated_atというカラムを作成してくれます。こちらは、データ登録(更新)の日時を記録してくれます。

マイグレーションの実行

マイグレーションに記述した内容を、データベースに適用します。

これはrails db:migrateコマンドを使用します。

 

ターミナル

# マイグレーションの実行(tweetsテーブルの作成)
% rails db:migrate

 以下のような表示が出れば成功です

# 下記のような結果が出力されれば成功です。(数字等は変化します)
== 20200306015943 CreateTweets: migrating =====================================
-- create_table(:tweets)
   -> 0.0148s
== 20200306015943 CreateTweets: migrated (0.0149s) ==================

 テーブルができたか確認していきます。

 

Sequel Pro

テーブルの視覚化をしてくれるアプリケーション

www.sequelpro.com

もし入れる場合は、こちらを参考にしてみてください

qiita.com

 

マイグレーションの修正

マイグレーションは、一度実行すると上から更新することができない仕様になっています。そのため、マイグレーションを一度差し戻す必要があります。

修正をするために以下二点のコマンドを追加で覚えます。

 

rails db:migrate:statusコマンド

▶︎マイグレーションファイルの状況を確認するコマンドです。

ターミナル

# マイグレーションファイルの状況を確認
% rails db:migrate:status
# 以下のような出力が出れば成功
database: first_app_development Status Migration ID Migration Name -------------------------------------------------- up 20190820071210 Create posts

 

rails db:rollbackコマンド

▶︎マイグレーションの差し戻すためのコマンドです。

ターミナル

# マイグレーションファイルの差し戻し
% rails db:rollback

修正を行う場合は、状況の確認差し戻し修正マイグレート状況の確認と一段階ずつ行います

 

まとめ

今回はテーブルの作成、またマイグレーションを中心に行いました。

複雑なプログラムになるとこれとは比べ物にはならないくらいに難しいですが、基本は何より重要です。

 

前回 モデルの作成 - whale_86’s blog

次回 ルーティングの設定 - whale_86’s blog